﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace PSE.Framework.Process
{
    /// <summary>
    /// Contrato do serviço do Hoster Process
    /// </summary>
    [ServiceContract]
    public interface IProcessService
    {
        /// <summary>
        /// Método utilizado pelo processo filho após ser inicializado, para liberar o 
        /// processo pai para continuar a execução.
        /// </summary>
        /// <param name="childName">Nome do processo filho</param>
        [OperationContract]
        void ReleaseParent(string childName);

        /// <summary>
        /// Evento utilizado pelo processo pai para saber que o processo filho foi inicializado.
        /// </summary>
        event EventHandler<ProcessNameEventArgs> ParentReleased;

        /// <summary>
        /// Método utilizado pelo processo pai para fechar o processo filho.
        /// </summary>
        [OperationContract]
        void CloseChild();

        /// <summary>
        /// Evento utilizado pelo processo filho para finalizar sua execução.
        /// </summary>
        event EventHandler ChildClosed;
    }
}
